const { DataTypes } = require('sequelize');
const { sequelize } = require('../library/sequelize.js');

// 投票作品模型
const voteEntryModel = sequelize.define('ly_vote_entry', {
    vote_entry_id: {
        type: DataTypes.INTEGER.UNSIGNED,
        primaryKey: true,
        autoIncrement: true,
        comment: '自增主键'
    },
    vote_id: {
        type: DataTypes.INTEGER.UNSIGNED,
        allowNull: false,
        defaultValue: 0,
        comment: '活动ID'
    },
    user_id: {
        type: DataTypes.INTEGER.UNSIGNED,
        allowNull: false,
        defaultValue: 0,
        comment: '拥有者ID'
    },
    title: {
        type: DataTypes.STRING(255),
        allowNull: false,
        defaultValue: '',
        comment: '作品名称'
    },
    slogan: {
        type: DataTypes.STRING(255),
        allowNull: false,
        defaultValue: '',
        comment: '口号'
    },
    author: {
        type: DataTypes.STRING(255),
        allowNull: false,
        defaultValue: '',
        comment: '作者或团队'
    },
    image: {
        type: DataTypes.TEXT,
        comment: '图片'
    },
    video: {
        type: DataTypes.TEXT,
        comment: '视频'
    },
    file: {
        type: DataTypes.TEXT,
        comment: '文件'
    },
    content: {
        type: DataTypes.TEXT('medium'),
        comment: '作品说明'
    },
    is_seed: {
        type: DataTypes.TINYINT.UNSIGNED,
        allowNull: false,
        defaultValue: 0,
        comment: '是否为种子'
    },
    is_verify: {
        type: DataTypes.TINYINT.UNSIGNED,
        allowNull: false,
        defaultValue: 0,
        comment: '是否经过审核'
    },
    is_formal: {
        type: DataTypes.TINYINT.UNSIGNED,
        allowNull: false,
        defaultValue: 0,
        comment: '是否禁用拉黑'
    },
    is_delete: {
        type: DataTypes.TINYINT.UNSIGNED,
        allowNull: false,
        defaultValue: 0,
        comment: '是否删除'
    },
    seed_number: {
        type: DataTypes.INTEGER.UNSIGNED,
        allowNull: false,
        defaultValue: 0,
        comment: '种子分值base：总分值=投票值+base值'
    },
    seed_sort: {
        type: DataTypes.INTEGER.UNSIGNED,
        allowNull: false,
        defaultValue: 0,
        comment: '种子排序'
    },
    update_time: {
        type: DataTypes.INTEGER.UNSIGNED,
        allowNull: false,
        defaultValue: 0,
        comment: '更新'
    },
    create_time: {
        type: DataTypes.INTEGER.UNSIGNED,
        allowNull: false,
        defaultValue: 0,
        comment: '创建'
    }
}, {
    tableName: 'ly_vote_entry',
    timestamps: false,
    comment: '投票作品表'
});

// 获取创建时的默认值
function getCreateDefaults() {
    const now = Math.floor(Date.now() / 1000);
    return {
        create_time: now,
        update_time: now
    };
}

// 获取更新时的默认值
function getUpdateDefaults() {
    return {
        update_time: Math.floor(Date.now() / 1000)
    };
}

// 初始化模型
async function initModel() {
    try {
        // 测试数据库连接
        await sequelize.authenticate();
        console.log('✅ 投票作品模型数据库连接成功');

        // 同步模型到数据库
        await voteEntryModel.sync({ alter: false });
        console.log('✅ 投票作品模型同步成功');

        // 输出模型字段信息
        console.log('🔍 投票作品模型字段数量:', Object.keys(voteEntryModel.rawAttributes).length);
        console.log('📋 投票作品模型字段列表:', Object.keys(voteEntryModel.rawAttributes));

        return true; // 返回成功状态

    } catch (error) {
        console.error('❌ 投票作品模型初始化失败:', error);
        return false; // 返回失败状态
    }
}

module.exports = {
    voteEntryModel,
    getCreateDefaults,
    getUpdateDefaults,
    initModel
};